#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Módulos

import pygame, sys
from pygame.locals import *
from sys import exit

# Constantes

ANCHO = 800
ALTO = 550
personaje = 'images/anzuelo.png'
# Clases

class Barco(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = cargar_imagen("images/barco.png", True)
        self.rect = self.image.get_rect()
        self.rect.centerx = 650
        self.rect.centery = 148
        self.speed = [0.5, -0.5]
        
class Cania(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = cargar_imagen("images/cania.png", True)
        self.rect = self.image.get_rect()
        self.rect.centerx = 575
        self.rect.centery = 125
        self.speed = [0.5, -0.5]
    
class Anzuelo(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(personaje)
        self.rect = self.image.get_rect()
        
    def colision(self, personaje, puntos):
        """Creo la colision. Lo hago desaparecer de pantalla y le doy puntaje"""
        if pygame.sprite.collide_rect(self, personaje):
            self.rect.centerx = 1000
            puntos[0] += 500
    
class Fish_one(pygame.sprite.Sprite):
    def __init__(self,x, y):
        x=x
        y=y
        pygame.sprite.Sprite.__init__(self)
        self.image = cargar_imagen("images/pez1.png", True) 
        self.rect = self.image.get_rect()
        self.rect.centerx = x
        self.rect.centery = y
        self.speed = [0.4, -0.4, 0.3, -0.3, 0.2, -0.2, 0.1 , -0.1]
    
    def ia(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[1] * time
        if self.rect.left <= 0:
            self.rect.centerx = 800

    def ia_1(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[3] * time
        if self.rect.left <= 0:
            self.rect.centerx = 800
    
    def ia_2(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[5] * time
        if self.rect.left <= 0:
            self.rect.centerx = 800

    def ia_3(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[7] * time
        if self.rect.left <= 0:
            self.rect.centerx = 800
    
class Fish_two(pygame.sprite.Sprite):
    def __init__(self,x, y):
        x=x
        y=y
        pygame.sprite.Sprite.__init__(self)
        self.image = cargar_imagen("images/pez.png", True) 
        self.rect = self.image.get_rect()
        self.rect.centerx = x
        self.rect.centery = y
        self.speed = [0.4, -0.4, 0.3, -0.3, 0.2, -0.2, 0.1 , -0.1]
    
    def ia_4(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[0] * time
        if self.rect.left >= ANCHO:
            self.rect.centerx = 0

    def ia_5(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[2] * time
        if self.rect.left >= ANCHO:
            self.rect.centerx = 0
    
    def ia_6(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[4] * time
        if self.rect.left >= ANCHO:
            self.rect.centerx = 0

    def ia_7(self, time):  
        """Creo la inteligencia artificial que mueve al pez"""
        self.rect.centerx += self.speed[6] * time
        if self.rect.left >= ANCHO:
            self.rect.centerx = 0
        
    def colision(self, anzuelo, puntos):
        """Creo la colisión. Lo hago desaparecer de pantalla y le doy puntaje"""
        if pygame.sprite.collide_rect(self, anzuelo):
            puntos[0] += 200
        print 'choque'

            

    
        return

class Fish(pygame.sprite.Sprite):
    def __init__(self, y):
        pygame.sprite.Sprite.__init__(self)
        self.image = cargar_imagen("images/pescado.png", True)
        self.image_dos = cargar_imagen("images/pez.png", True)
        self.rect = self.image.get_rect ()
        self.rect_dos = self.image_dos.get_rect ()
        self.rect.centerx = 200
        self.rect.centery = 400
        self.rect_dos.centerx = 80
        self.rect_dos.centery = 350
        self.speed = [0.3, -0.3]
        self.speed_dos = [0.3, -0.3]
       
           
    def ia(self, time):  
        """Creo la inteligencia artificial que va a lo ancho de la pantalla"""
        self.rect.centerx += self.speed[0] * time
        if self.rect.left >= 0:
            #self.speed[0] = -self.speed[0]
            self.rect.centerx += self.speed[0] * time
            x = self.rect.centerx
        return
        pescado = 0
        pez = 0
        while pescado < 3 or pez < 3:
            y = random.randint
            pes= Fish(0, y)
            if collision.Cania:
                pescado = 1


#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

# Funciones

def cargar_imagen(nombre, transparent=False):
    try:
        image = pygame.image.load(nombre)
    except pygame.error, message:
        raise SystemExit, message
    image = image.convert()
    if transparent:
        color = image.get_at((0,0))
        image.set_colorkey(color, RLEACCEL)
    return image
    
def texto(texto, posx, posy, color=(255, 0, 0)):
    """ La utilizo para cargar la fuente del texto, tamaño. color y variable para posición"""
    fuente = pygame.font.Font('fonts/karnivor.ttf', 25)
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy
    return salida, salida_rect


def texto(texto, posx, posy, color=(255, 0, 0)):
    """ La utilizo para cargar la fuente del texto, tamaño y color"""
    fuente = pygame.font.Font('fonts/karnivor.ttf', 25)
    salida = pygame.font.Font.render(fuente, texto, 1, color)
    salida_rect = salida.get_rect()
    salida_rect.centerx = posx
    salida_rect.centery = posy



    return salida, salida_rect

        
def main():
    screen = pygame.display.set_mode((ANCHO, ALTO))
    pygame.display.set_caption("Pruebas Pygame")
    fondo = cargar_imagen('images/mar.jpg')
    barco = Barco()
    clock = pygame.time.Clock()    
    cania = Cania()
    pescado = Fish(380)#
    pes = Fish_one(800, 450)
    pes1 = Fish_one(800, 400)
    pes2 = Fish_one(800, 300)
    pes3 = Fish_one(800, 250)
    pes4 = Fish_two(0, 270)
    pes5 = Fish_two(0, 350)
    pes6 = Fish_two(0, 500)
    pes7 = Fish_two(0, 450)
    
    screendos = pygame.display.set_mode((800, 550), 0, 16)
    puntos = [0] 
    mouse_cursor = pygame.image.load(personaje)#
    anzuelo = Anzuelo()
    puntos = [0]
    
    while True:
        time = clock.tick(60)
        for eventos in pygame.event.get():
            if eventos.type == QUIT:
                sys.exit(0)
        
        p, p_rect = texto(str(puntos[0]), ANCHO/4, 40)
        screen.blit(fondo, (0, 0))
        screen.blit(p, p_rect)#Muestro el puntaje
        mouse_pos = pygame.mouse.get_pos()
    
        x, y = pygame.mouse.get_pos()#
        x-= mouse_cursor.get_width() / 2#
        y-= mouse_cursor.get_height() / 2#
        screen.blit(mouse_cursor, (x, y))#
        
        pygame.draw.line(screendos, (0, 0, 0), (558, 86), mouse_pos)
        
        screen.blit(barco.image, barco.rect)
        screen.blit(cania.image, cania.rect)
        screen.blit(pescado.image, pescado.rect)
        screen.blit(pes.image, pes.rect)
        screen.blit(pes1.image, pes1.rect)
        screen.blit(pes2.image, pes2.rect)
        screen.blit(pes3.image, pes3.rect)
        screen.blit(pes4.image, pes4.rect)
        screen.blit(pes5.image, pes5.rect)
        screen.blit(pes6.image, pes6.rect)
        screen.blit(pes7.image, pes7.rect)
        anzuelo.colision(personaje, puntos)
        pescado.ia(time)
        pes.ia(time)
        pes1.ia_1(time)
        pes2.ia_2(time)
        pes3.ia_3(time)
        pes4.ia_4(time)
        pes5.ia_5(time)
        pes6.ia_6(time)
        pes7.ia_7(time)
        
        #Muestro el puntaje
        pes.colision(anzuelo, puntos)
        pes1.colision(anzuelo, puntos)
        pes2.colision(anzuelo, puntos)
        pes3.colision(anzuelo, puntos)
    
        pygame.display.flip()
        pygame.display.update()

    
    return 0

if __name__ == '__main__':
    pygame.init()
    main()
    

